If an application running on a first computer is to perform both secure and non-secure communication with a second computer, the application must open two sockets with the second computer: one for secure communication and the other for non-secure communication. A socket is generally understood as an Application Programming Interface (“API”) of an operating system that delivers incoming data packets to the appropriate application process or thread based on a combination of local and remote Internet Protocol (“IP”) addresses and port numbers. For instance, a socket of the aforementioned second computer that is opened for non-secure communication with the application of the first computer may include the IP address of the second computer as well as a designated port (such as port 80 for Hypertext Transfer Protocol (“HTTP”)). Each socket is generally mapped to a communicating application process or thread. However, computers generally have both a per-process limit and a global (overall) limit on the number of open descriptors that describe each socket, thus limiting the total number of sockets. When these limits are reached, the available sockets are said to be exhausted and further sockets generally cannot be opened without closing previously opened sockets.